package schema

import (
	"errors"
)

// Role 角色管理
type Role struct {
	ID       int64    `json:"id" bson:"_id" structs:"id"`                     // 唯一标识(自增ID)
	RecordID string   `json:"record_id" bson:"record_id" structs:"record_id"` // 记录内码(uuid)
	Name     string   `json:"name" bson:"name" structs:"name"`                // 角色名称
	Sequence int      `json:"sequence" bson:"sequence" structs:"sequence"`    // 排序值
	Memo     string   `json:"memo" bson:"memo" structs:"memo"`                // 角色备注
	MenuIDs  []string `json:"menu_ids" bson:"menu_ids" structs:"menu_ids"`    // 角色授权菜单ID
	Status   int      `json:"status" bson:"status" structs:"status"`          // 状态(1:启用 2:停用)
	Creator  string   `json:"creator" bson:"creator" structs:"creator"`       // 创建人
	Created  int64    `json:"created" bson:"created" structs:"created"`       // 创建时间戳
	Deleted  int64    `json:"deleted" bson:"deleted" structs:"deleted"`       // 删除时间戳
}

// Validate 验证参数
func (a *Role) Validate() error {
	if a.Name == "" ||
		len(a.MenuIDs) == 0 ||
		a.Status == 0 {
		return errors.New("无效的请求参数")
	}
	return nil
}

// RoleQueryParam 角色管理查询参数
type RoleQueryParam struct {
	Name   string // 角色名称
	Status int    // 状态(1:启用 2:停用)
}

// RoleQueryResult 角色管理查询结果
type RoleQueryResult struct {
	ID       int64  `json:"id" bson:"_id" structs:"id"`                     // 唯一标识(自增ID)
	RecordID string `json:"record_id" bson:"record_id" structs:"record_id"` // 记录内码(uuid)
	Name     string `json:"name" bson:"name" structs:"name"`                // 角色名称
	Sequence int    `json:"sequence" bson:"sequence" structs:"sequence"`    // 排序值
	Memo     string `json:"memo" bson:"memo" structs:"memo"`                // 角色备注
	Status   int    `json:"status" bson:"status" structs:"status"`          // 状态(1:启用 2:停用)
	Creator  string `json:"creator" bson:"creator" structs:"creator"`       // 创建人
	Created  int64  `json:"created" bson:"created" structs:"created"`       // 创建时间戳
}

// RoleSelectParam 角色管理选择数据查询参数
type RoleSelectParam struct {
	Name string // 角色名称
}

// RoleSelect 角色管理选择数据
type RoleSelect struct {
	RecordID string `json:"record_id" bson:"record_id" structs:"record_id"` // 记录内码(uuid)
	Name     string `json:"name" bson:"name" structs:"name"`                // 角色名称
}
